package com.ruoyi.cost.mapper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cost.domain.AccSubject;
import com.ruoyi.cost.domain.AccVou;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 记账凭证Mapper接口
 *
 * @author 王志旸
 * @date 2024-07-09
 */
@Mapper

public interface AccVouMapper extends BaseMapper<AccVou> {
    /**
     * 查询记账凭证
     *
     * @param id 记账凭证主键
     * @return 记账凭证
     */
    public AccVou selectAccVouById(String id);

    /**
     * 查询记账凭证列表
     *
     * @param accVou 记账凭证
     * @return 记账凭证集合
     */
    public List<AccVou> selectAccVouList(AccVou accVou);

    /**
     * 新增记账凭证
     *
     * @param accVou 记账凭证
     * @return 结果
     */
    public int insertAccVou(AccVou accVou);

    /**
     * 修改记账凭证
     *
     * @param accVou 记账凭证
     * @return 结果
     */
    public int updateAccVou(AccVou accVou);

    /**
     * 删除记账凭证
     *
     * @param id 记账凭证主键
     * @return 结果
     */
    public int deleteAccVouById(String id);

    /**
     * 批量删除记账凭证
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAccVouByIds(String[] ids);

    List<AccVou> selectVouList(@Param("accMode") String accMode, @Param("accSubName") String accSubName);

    List<AccVou> findByAccVouCodeAndAccVouDate(@Param("accVouCode") String accVouCode, @Param("accVouDate") String accVouDate);

    AccSubject getVouSubType(String subCode);

    List<AccVou> getList(@Param("accVouCode") String voucode, @Param("accVouDate") String voudate);

    List<AccVou> getListCaiWu(@Param("accVouCode") String voucode, @Param("accVouDate") String voudate);

    List<AccVou> getListyusuan(@Param("accVouCode") String voucode, @Param("accVouDate") String voudate);

    List<Map> getSupListBySpares(@Param("spares") ArrayList<String> spares);

    List<Map> getSupCategory(@Param("accMode") String accMode, @Param("accSubNum") String accSubNum);

    List<Map<String, String>> findSupParent(String accMode);

    List<Map<String, String>> findSupChild(@Param("accMode") String accMode, @Param("customCode") String customCode);

    List<AccVou> selectVouList1(String accMode);

    String getAllYuE(@Param("accMode") String accMode, @Param("accSubName") String accSubName, @Param("accBusiness") String accBusiness, @Param("spare1") String spare1);

    List<HashMap> findSups(@Param("split") String[] split, @Param("accMode") String accMode);

    List<HashMap> findSupsLoc(@Param("supList") String[] supList, @Param("accMode") String accMode, @Param("supSupList") String[] supSupList);

    List<HashMap> findSupsOne(@Param("split") String[] split, @Param("accMode") String accMode);

    List<HashMap> findSupsLocOne(@Param("supList") String[] supList, @Param("accMode") String accMode, @Param("supSupList") String[] supSupList);

    List<HashMap> findSupsBySub(@Param("supList") String[] supList, @Param("accMode") String accMode, @Param("accSubName") String accSubName);

    Map findSpareValue(@Param("assisted_code") String assisted_code, @Param("assisted_name") String assisted_name, @Param("accMode") String accMode);
}
